package com.denlaku.longan.repository;

import com.denlaku.longan.dao.ObjectTagDao;
import com.denlaku.longan.qo.ObjPermQuery;
import com.denlaku.longan.qo.Query;
import com.denlaku.longan.vo.ObjectTag;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.Collections;
import java.util.List;

/**
 * @author tianx
 */
@Repository
public class ObjectTagRepository {
    @Autowired
    private ObjectTagDao objectTagDao;

    /**
     * 新增权限标签
     *
     * @param objectTag 权限标签
     */
    public void add(ObjectTag objectTag) {
        objectTagDao.add(objectTag);
    }

    /**
     * 修改权限标签
     *
     * @param objectTag 权限标签
     */
    public void update(ObjectTag objectTag) {
        objectTagDao.update(objectTag);
    }

    /**
     * 获取权限标签
     *
     * @param query 查询参数
     * @return 权限标签
     */
    public ObjectTag get(Query query) {
        return objectTagDao.get(query);
    }

    /**
     * 查询权限标签列表
     *
     * @param query 查询参数
     * @return 权限标签列表
     */
    public List<ObjectTag> list(Query query) {
        return objectTagDao.list(query);
    }

    /**
     * 根据ID查询权限标签列表
     *
     * @param query 查询参数
     * @return 权限标签列表
     */
    public List<ObjectTag> listByIds(Query query) {
        if (CollectionUtils.isEmpty(query.getIds())) {
            return Collections.emptyList();
        }
        return objectTagDao.listByIds(query);
    }

    /**
     * 搜索权限标签
     *
     * @param query 查询参数
     * @return 权限标签列表
     */
    public List<ObjectTag> search(Query query) {
        query.setIds(ListUtils.emptyIfNull(query.getIds()));
        return objectTagDao.search(query);
    }

    /**
     * 删除权限标签
     *
     * @param query 查询参数
     */
    public void delete(ObjPermQuery query) {
        objectTagDao.delete(query);
    }
}
